gsk: Tie render nodes to renderers
authorEmmanuele Bassi <ebassi@gnome.org>
Wed, 27 Jul 2016 15:23:44 +0000 (16:23 +0100)
committerEmmanuele Bassi <ebassi@gnome.org>
Tue, 18 Oct 2016 10:49:10 +0000 (11:49 +0100)
commit3d90a070d586fa80fb3265a044ee0c5dcc546c55
tree798cbbb4ac23e72d8db6aa7748ef25eb45b36879
parentab8420ec5288dbe8f533234676f193355912fdb9
gsk: Tie render nodes to renderers

Render nodes need access to rendering information like scaling factors.
If we keep render nodes separate from renderers until we submit a nodes
tree for rendering we're going to have to duplicate all that information
in a way that makes the API more complicated and fuzzier on its
semantics.

By having GskRenderer create GskRenderNode instances we can tie nodes
and renderers together; since higher layers will also have access to
the renderer instance, this does not add any burden to callers.

Additionally, if memory measurements indicate that we are spending too
much time in the allocation of new render nodes, we can now easily
implement a free-list or a renderer-specific allocator without breaking
the API.
gsk/gskrenderer.c
gsk/gskrenderer.h
gsk/gskrendernode.c
gsk/gskrendernode.h
gsk/gskrendernodeprivate.h
gtk/gtkwidget.c
gtk/gtkwindow.c